package org.dezenho.client.IU;

import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JPanel;


/**Classse, de reuso do Deitel, responsavel por capturar o movimento
 * do mouse sobre um JPanel e pintar os pixels tocados pelo cursor.
 * @author Owner
 */
@SuppressWarnings("serial")
public class PaintPanel extends JPanel {

	private final int numMaxPontos = 10000;	
	//Contagem dos pontos pintados na tela
	private int contadorPontos = 0;
	//Estrutura de pontos que guarda o desenho
	protected Point desenho[] = new Point[getNumMaxPontos()];
/**
 * Construtor possui a acao de contar os pixels que foram tocados pelo mouse em 
 * um JPanel.
 */
	public PaintPanel(){

		addMouseMotionListener(

				new MouseMotionAdapter(){ //Classe interna 

					public void mouseDragged(MouseEvent event){
						if( getContadorPontos() < getDesenho().length){
							getDesenho()[getContadorPontos()] = event.getPoint();
							setContadorPontos(getContadorPontos() + 1);
							repaint();
						}
					}
				});		
	}
/**
 * Metodo responsavel por limpar a area do desenho e pintar os pontos com ovais
 */
	public void paintComponent(Graphics g){

		super.paintComponent(g);
		for(int i = 0; i < contadorPontos; i++){
			g.fillOval(getDesenho()[i].x, getDesenho()[i].y, 10, 10);
		}
	}
//metodos de acesso
	public int getContadorPontos() {
		return contadorPontos;
	}

	public void setContadorPontos(int contadorPontos) {
		this.contadorPontos = contadorPontos;
	}

	public int getNumMaxPontos() {
		return numMaxPontos;
	}

	public Point[] getDesenho() {
		return desenho;
	}

	public void setDesenho(Point[] desenho) {
		this.desenho = desenho;
	}

}
